if(NOT CMAKE_TOOLCHAIN_FILE)
    # 检测操作系统
    if(APPLE)
        # macOS 系统
        message(STATUS "检测到你使用的是 macOS 系统")
        # 在 macOS 上，进一步检查是否有可用的 gcc-arm-none-eabi
        find_program(ARM_NONE_EABI_GCC arm-none-eabi-gcc)
        if(ARM_NONE_EABI_GCC)
            set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake)
            message(STATUS "已找到 gcc-arm-none-eabi，将使用该工具链")
        else()
            # 如果没找到，可以尝试 starm-clang 作为备选
            find_program(STARM_CLANG starm-clang)
            if(STARM_CLANG)
                set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake)
                message(STATUS "使用 starm-clang 工具链（备选方案）")
            else()
                message(FATAL_ERROR "在 macOS 上未找到可用的 ARM 工具链，请安装STM32CubeCLT")
            endif()
        endif()
    elseif(WIN32)
        # Windows 系统
        message(STATUS "检测到你使用的是 Windows 系统")
        # Windows 系统也优先使用 Arm-none-eabi-GCC
        find_program(ARM_NONE_EABI_GCC arm-none-eabi-gcc)
        if(ARM_NONE_EABI_GCC)
            set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake)
            message(STATUS "已找到 gcc-arm-none-eabi，将使用该工具链")
        else()
            set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake)
            message(STATUS "未找到 gcc-arm-none-eabi 工具链，使用 starm-clang 工具链")
        endif()
    elseif(LINUX AND NOT APPLE)
        # Linux 系统
        message(STATUS "检测到你使用的是 Linux 系统")
        # Linux 系统也优先使用 Arm-none-eabi-GCC
        find_program(ARM_NONE_EABI_GCC arm-none-eabi-gcc)
        if(ARM_NONE_EABI_GCC)
            set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake)
            message(STATUS "已找到 gcc-arm-none-eabi，将使用该工具链")
        else()
            set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake)
            message(STATUS "未找到 gcc-arm-none-eabi 工具链，使用 starm-clang 工具链")
        endif()
    else()
        # 其他未知系统
        message(WARNING "未知的操作系统，尝试使用默认工具链")
        find_program(STARM_CLANG starm-clang)
        if(STARM_CLANG)
            set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/starm-clang.cmake)
            message(STATUS "已找到 starm-clang，使用 starm-clang 工具链")
        else()
            set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Toolchain/gcc-arm-none-eabi.cmake)
            message(STATUS "使用 gcc-arm-none-eabi 工具链")
        endif()
    endif()
endif()